package com.yincheng.oes.sso.service;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.yincheng.oes.sso.entity.User;
import com.yincheng.oes.sso.util.UserUtils;

/**
 *
 * @author yangsy
 * @version 1.0.0
 * @since
 * 创建时间：2018年7月11日
 * 功能描述：登录时针对访问请求预处理类
 * 邮箱地址：446948434@qq.com
 */
public class SingleUserInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        String url = request.getRequestURI();
        // 如果拦截到的是登录校验的话放行
        if (url.indexOf("checkLogin") >= 0) {
            return true;
        }
        // 如果拦截到的是登录的页面的话放行
        if (url.indexOf("login.jsp") >= 0 || url.indexOf("login") >= 0 || url.indexOf("toLogin") >= 0) {
            return true;
        }
        // 如果拦截到的是获取验证码的话放行
        if (url.indexOf("getCode") >= 0) {
            return true;
        }
        // 如果拦截到的是注册账号的话放行
        if (url.indexOf("register") >= 0) {
            return true;
        }
        // 如果拦截到的是重置密码的话放行
        if (url.indexOf("resetPsd") >= 0) {
            return true;
        }

        // 如果用户名存在放行（即登录放行）
        String userAccount = (String) request.getSession().getAttribute("userAccount");
        if (userAccount != null) {
            // 保存用户信息到当前线程中
            String userName = (String) request.getSession().getAttribute("userName");
            String userId = (String) request.getSession().getAttribute("userId");
            User user = new User();
            user.setUserId(userId);
            user.setUserAccount(userAccount);
            user.setUserName(userName);
            UserUtils.set(user);

            return true;
        }
        request.getRequestDispatcher("login.jsp").forward(request, response);
        return false;

    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        // TODO Auto-generated method stub

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        // TODO Auto-generated method stub

    }

}
